home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / dlasd1.z / dlasd1
Encoding:
Text File  |  2002-10-03  |  7.0 KB  |  199 lines

  1.  
  2.  
  3.  
  4. DDDDLLLLAAAASSSSDDDD1111((((3333SSSS))))                                                          DDDDLLLLAAAASSSSDDDD1111((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      DLASD1 - compute the SVD of an upper bidiagonal N-by-M matrix B,
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      SUBROUTINE DLASD1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT, IDXQ,
  13.                         IWORK, WORK, INFO )
  14.  
  15.          INTEGER        INFO, LDU, LDVT, NL, NR, SQRE
  16.  
  17.          DOUBLE         PRECISION ALPHA, BETA
  18.  
  19.          INTEGER        IDXQ( * ), IWORK( * )
  20.  
  21.          DOUBLE         PRECISION D( * ), U( LDU, * ), VT( LDVT, * ), WORK( *
  22.                         )
  23.  
  24. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  25.      These routines are part of the SCSL Scientific Library and can be loaded
  26.      using either the -lscs or the -lscs_mp option.  The -lscs_mp option
  27.      directs the linker to use the multi-processor version of the library.
  28.  
  29.      When linking to SCSL with -lscs or -lscs_mp, the default integer size is
  30.      4 bytes (32 bits). Another version of SCSL is available in which integers
  31.      are 8 bytes (64 bits).  This version allows the user access to larger
  32.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  33.      by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
  34.      only one of the two versions; 4-byte integer and 8-byte integer library
  35.      calls cannot be mixed.
  36.  
  37. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  38.      DLASD1 computes the SVD of an upper bidiagonal N-by-M matrix B, where N =
  39.      NL + NR + 1 and M = N + SQRE. DLASD1 is called from DLASD0.
  40.  
  41.      A related subroutine DLASD7 handles the case in which the singular values
  42.      (and the singular vectors in factored form) are desired.
  43.  
  44.      DLASD1 computes the SVD as follows:
  45.  
  46.                    ( D1(in)  0    0     0 )
  47.        B = U(in) * (   Z1'   a   Z2'    b ) * VT(in)
  48.                    (   0     0   D2(in) 0 )
  49.  
  50.          = U(out) * ( D(out) 0) * VT(out)
  51.  
  52.      where Z' = (Z1' a Z2' b) = u' VT', and u is a vector of dimension M with
  53.      ALPHA and BETA in the NL+1 and NL+2 th entries and zeros elsewhere; and
  54.      the entry b is empty if SQRE = 0.
  55.  
  56.      The left singular vectors of the original matrix are stored in U, and the
  57.      transpose of the right singular vectors are stored in VT, and the
  58.      singular values are in D.  The algorithm consists of three stages:
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. DDDDLLLLAAAASSSSDDDD1111((((3333SSSS))))                                                          DDDDLLLLAAAASSSSDDDD1111((((3333SSSS))))
  71.  
  72.  
  73.  
  74.         The first stage consists of deflating the size of the problem
  75.         when there are multiple singular values or when there are zeros in
  76.         the Z vector.  For each such occurence the dimension of the
  77.         secular equation problem is reduced by one.  This stage is
  78.         performed by the routine DLASD2.
  79.  
  80.         The second stage consists of calculating the updated
  81.         singular values. This is done by finding the square roots of the
  82.         roots of the secular equation via the routine DLASD4 (as called
  83.         by DLASD3). This routine also calculates the singular vectors of
  84.         the current problem.
  85.  
  86.         The final stage consists of computing the updated singular vectors
  87.         directly using the updated singular values.  The singular vectors
  88.         for the current problem are multiplied with the singular vectors
  89.         from the overall problem.
  90.  
  91.  
  92. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  93.      NL     (input) INTEGER
  94.             The row dimension of the upper block.  NL >= 1.
  95.  
  96.      NR     (input) INTEGER
  97.             The row dimension of the lower block.  NR >= 1.
  98.  
  99.      SQRE   (input) INTEGER
  100.             = 0: the lower block is an NR-by-NR square matrix.
  101.             = 1: the lower block is an NR-by-(NR+1) rectangular matrix.
  102.  
  103.             The bidiagonal matrix has row dimension N = NL + NR + 1, and
  104.             column dimension M = N + SQRE.
  105.  
  106.      D      (input/output) DOUBLE PRECISION array,
  107.             dimension (N = NL+NR+1).  On entry D(1:NL,1:NL) contains the
  108.             singular values of the
  109.             upper block; and D(NL+2:N) contains the singular values of
  110.             the lower block. On exit D(1:N) contains the singular values of
  111.             the modified matrix.
  112.  
  113.      ALPHA  (input) DOUBLE PRECISION
  114.             Contains the diagonal element associated with the added row.
  115.  
  116.      BETA   (input) DOUBLE PRECISION
  117.             Contains the off-diagonal element associated with the added row.
  118.  
  119.      U      (input/output) DOUBLE PRECISION array, dimension(LDU,N)
  120.             On entry U(1:NL, 1:NL) contains the left singular vectors of
  121.             the upper block; U(NL+2:N, NL+2:N) contains the left singular
  122.             vectors of the lower block. On exit U contains the left singular
  123.             vectors of the bidiagonal matrix.
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. DDDDLLLLAAAASSSSDDDD1111((((3333SSSS))))                                                          DDDDLLLLAAAASSSSDDDD1111((((3333SSSS))))
  137.  
  138.  
  139.  
  140.      LDU    (input) INTEGER
  141.             The leading dimension of the array U.  LDU >= max( 1, N ).
  142.  
  143.      VT     (input/output) DOUBLE PRECISION array, dimension(LDVT,M)
  144.             where M = N + SQRE.  On entry VT(1:NL+1, 1:NL+1)' contains the
  145.             right singular
  146.             vectors of the upper block; VT(NL+2:M, NL+2:M)' contains the right
  147.             singular vectors of the lower block. On exit VT' contains the
  148.             right singular vectors of the bidiagonal matrix.
  149.  
  150.      LDVT   (input) INTEGER
  151.             The leading dimension of the array VT.  LDVT >= max( 1, M ).
  152.  
  153.      IDXQ  (output) INTEGER array, dimension(N)
  154.            This contains the permutation which will reintegrate the subproblem
  155.            just solved back into sorted order, i.e.  D( IDXQ( I = 1, N ) )
  156.            will be in ascending order.
  157.  
  158.      IWORK  (workspace) INTEGER array, dimension( 4 * N )
  159.  
  160.      WORK   (workspace) DOUBLE PRECISION array, dimension( 3*M**2 + 2*M )
  161.  
  162.      INFO   (output) INTEGER
  163.             = 0:  successful exit.
  164.             < 0:  if INFO = -i, the i-th argument had an illegal value.
  165.             > 0:  if INFO = 1, an singular value did not converge
  166.  
  167. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  168.      Based on contributions by
  169.         Ming Gu and Huan Ren, Computer Science Division, University of
  170.         California at Berkeley, USA
  171.  
  172.  
  173. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  174.      INTRO_LAPACK(3S), INTRO_SCSL(3S)
  175.  
  176.      This man page is available only online.
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.